# coding: utf-8
#实现thrift中定义的接口   流程：根据规范编写thrift文件（定义接口）  利用thrift文件根据命令生成py接口  编写实现类

#实现类

# import sys
# sys.path.append('/usr/lib/python2.7/site-packages/')

#导入生成的MessageService
from message.api import MessageService
#thrift的包
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from thrift.server import TServer
#发送邮件的包
import smtplib
from email.mime.text import MIMEText
from email.header import Header
#定义一个邮箱
sender = 'imoocd@163.com'
#授权码
authCode = 'aA111111'
#定义一个类
class MessageServiceHandler:
#定义一个函数
#法短信需要收费，做一个加的，输出就行
    def sendMobileMessage(self, mobile, message):
        print ("sendMobileMessage, mobile:"+mobile+", message:"+message)
        return True

    def sendEmailMessage(self, email, message):
        print ("sendEmailMessage, email:"+email+", message:"+message)
        messageObj = MIMEText(message, "plain", "utf-8")
        messageObj['From'] = sender  #谁发
        messageObj['To'] = email  #发送的地址
        messageObj['Subject'] = Header('慕课网邮件', 'utf-8')  #主题
        try:#捕获异常
            smtpObj = smtplib.SMTP('smtp.163.com')  #smtp对象
            smtpObj.login(sender, authCode)#登录服务器
            smtpObj.sendmail(sender, [email], messageObj.as_string())#发送邮件：1，发送者，2，给谁发【】3，内容
            print ("send mail success")
            return True   #发送成功就return true，
        except smtplib.SMTPException:       #打印异常
            print ("send mail failed!")
            return False

#与thrift对接：thrift不知道存在这个类，也不知道如何对接。定义主函数
if __name__ == '__main__':
    #定义的handler---上面的类
    handler = MessageServiceHandler()
    #调用生成的py，调用构造方法，利用hander构造,负责处理  MessageService是我们定义的服务名（用的是生成的）
    processor = MessageService.Processor(handler)
    #监听的端口，使用api---利用thrift的模块--------------------注意none
    # transport = TSocket.TServerSocket(None, "9090")
    transport = TSocket.TServerSocket("127.0.0.1", "9090")  #写localhost连接不上··············
    #传输的方式，帧传输，使用api---利用thrift的模块
    tfactory = TTransport.TFramedTransportFactory()
    #二进制传输协议，使用api---利用thrift的模块
    pfactory = TBinaryProtocol.TBinaryProtocolFactory()
    #创建server：1.处理2.监听.3.传输方式,4.传输协议  Thrift包里面的
    server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)
    print ("python thrift server start on 9090")
    server.serve()
    print ("python thrift server exit")
